﻿package pluginfw.nio.message
{
    import flash.utils.*;
    import pluginfw.nio.encrypt.*;

    public class MessageFactory extends Object
    {
        public static var MESSAGEID:int = 1;

        public function MessageFactory()
        {
            return;
        }// end function

        public static function createSimpleMessage(param1:int, param2:int, param3:int, param4 = null) : SimpleMessage
        {
            var _loc_5:* = new ByteArray();
            new ByteArray().writeByte(param1);
            _loc_5.writeShort(param3);
            if (param4 != null)
            {
                _loc_5.writeObject(param4);
            }
            var _loc_6:* = _loc_5.length + 5;
            var _loc_7:* = new SimpleMessage();
            var _loc_8:* = CRC16.caluCRC(_loc_5);
            CRC16.encode(_loc_5, _loc_8, 3);
            _loc_5.position = 0;
            var _loc_9:* = _loc_7.getBuffer();
            _loc_7.getBuffer().writeInt(_loc_5.length + 5);
            _loc_9.writeByte(0);
            _loc_9.writeShort(param2);
            _loc_9.writeShort(_loc_8);
            _loc_9.writeBytes(_loc_5);
            return _loc_7;
        }// end function

        public static function createBufferMessage(param1:int, param2:int, param3:int, param4:ByteArray = null) : BufferMessage
        {
            var _loc_5:ByteArray = new ByteArray();
            new ByteArray().writeByte(param1);
            _loc_5.writeShort(param3);
            if (param4)
            {
                param4.position = 0;
                _loc_5.writeBytes(param4);
            }
            var _loc_6:* = _loc_5.length + 4 + 1;
            var _loc_7:* = new BufferMessage();
            var _loc_8:* = CRC16.caluCRC(_loc_5);
            CRC16.encode(_loc_5, _loc_8, 3);
            var _loc_9:* = _loc_7.getBuffer();
            _loc_5.position = 0;
            _loc_9.writeInt(_loc_6);
            _loc_9.writeByte(3);
            _loc_9.writeShort(param2);
            _loc_9.writeShort(_loc_8);
            _loc_9.writeBytes(_loc_5);
            return _loc_7;
        }// end function

        public static function createProxyMessage(param1:int, param2:String, param3:Object) : ProxyMessage
        {
            var _loc_4:* = new ByteArray();
            new ByteArray().writeInt(param1);
            _loc_4.writeUTFBytes(param2);
            _loc_4.position = 36;
            _loc_4.writeObject(param3);
            var _loc_5:* = _loc_4.length + 2 + 1;
            var _loc_6:* = new ProxyMessage();
            var _loc_7:* = CRC16.caluCRC(_loc_4);
            CRC16.encode(_loc_4, _loc_7);
            var _loc_8:* = _loc_6.getBuffer();
            _loc_4.position = 0;
            _loc_8.writeInt(_loc_5);
            _loc_8.writeByte(1);
            _loc_8.writeShort(_loc_7);
            _loc_8.writeBytes(_loc_4);
            return _loc_6;
        }// end function

    }
}
